The term service-oriented architecture (SOA) generally refers to a software strategy that discrete functions from enterprise applications into interoperable, standards-based services, which can then be combined with other services and reused to meet particular business needs. Thus, using SOA, functionality provided by applications, potentially from multiple vendors, may be “exposed” as one or more services, and then “orchestrated” using orchestration capabilities like Business Process Execution Language (BPEL) into new composite applications. These composite applications may be developed to support an organization's business processes.
Service Component Architecture (SCA) is a software technology created by major software vendors, including IBM, Oracle, and TIBCO. SCA describes a model for building applications and systems using SOA principles, and further builds on open standards, such as Web services, to extend and complement existing SOA approaches.
A basic aspect of SCA is a composite, which is a unit of deployment and includes services that can be accessed remotely. A composite is made up of one or more components, of each which may be directed to performing a particular task. Components may offer their functions as services, which may be used either by other components within the same module or which can be made available for use outside the module through entry points. Components may also depend on services provided by other components—either local or remote—and are commonly called references. References may be linked to services provided by other components in the same composite, or may be linked to services provided outside the composite, which potentially may be provided by other composites. Also included within a composite are linkages between references and services, which may be referred to as wires.
As software complexity continues to rise, SOA applications may similarly increase in complexity. For example, an application may include many composites interacting with each other and with other external systems, and each composite may include multiple components. With this increased complexity, it managing these SOA applications may be difficult. For example, when the performance of an SOA system is negatively impacted, it may be difficult to identify which, if any, of the portions of a large SOA application are responsible for the performance degradation, and also to determine the causes of the performance degradation with respect to those specific portions.
Accordingly, there is a need for easier maintenance, fault detection, and troubleshooting of complex SOA applications.